/*
 * ============================================================================
 * = COPYRIGHT
 *          PAX Computer Technology(Shenzhen) Co., Ltd. PROPRIETARY INFORMATION
 *   This software is supplied under the terms of a license agreement or nondisclosure
 *   agreement with PAX Computer Technology(Shenzhen) Co., Ltd. and may not be copied or
 *   disclosed except in accordance with the terms in that agreement.
 *     Copyright (C) 2021 PAX Computer Technology(Shenzhen) Co., Ltd. All rights reserved.
 * ============================================================================
 */

import 'package:pigeon/pigeon.dart';


@ConfigurePigeon(PigeonOptions(
    dartOut: 'lib/auto_pigeon/poslink_sdk_transaction.dart',
    javaOptions: JavaOptions(
      className: 'POSLinkTransaction',
      package: 'com.example.pos_link.pigeon',
    ),
    objcOptions: ObjcOptions(prefix: ''),
    javaOut: './android/src/main/java/com/example/pos_link/pigeon/POSLinkTransaction.java',
  ),
)
class TransactionHostCredential {
  String? mid;
  String? serviceUser;
  String? servicePassword;
}

class TransactionMultiMerchant {
  String? multiMerchantId;
  String? multiMerchantName;
}

class TransactionFleetCardRequest {
  String? odometer;
  String? vehicleNumber;
  String? jobNumber;
  String? driverId;
  String? employeeNumber;
  String? licenseNumber;
  String? jobId;
  String? departmentNumber;
  String? customerData;
  String? userId;
  String? vehicleId;
  String? fleetPromptCode;
}

class TransactionOriginal {
  String? transactionDate;
  String? pan;
  String? expiryDate;
  String? transactionTime;
  String? settlementDate;
  TransactionTransactionType? transactionType;
  String? amount;
  String? batchNumber;
  String? paymentService2000;
  String? authorizationResponse;
}

class TransactionHostGateway {
  String? hostReferenceNumber;
  String? gatewayId;
  TransactionTokenRequestFlag? tokenRequestFlag;
  String? token;
  String? cardType;
  String? passThruData;
  TransactionHostGatewayReturnReason? returnReason;
  String? stationId;
  String? globalUid;
  String? customizeData1;
  String? customizeData2;
  String? customizeData3;
  String? ewicDiscountAmount;
  String? tokenSerialNumber;
}

class TransactionTransactionPromptBitmap {
  bool? confirmTotalAmount;
  bool? confirmSurchargeAmount;
  bool? confirmVoidTransaction;
  bool? avsAddress;
  bool? avsZip;
  bool? tax;
  bool? cvv;
  bool? cashback;
  bool? clerkOrServerId;
  bool? orderNumberOrPoNumber;
  bool? invoiceNumber;
  bool? debitAccount;
  bool? giftCvdOrPin;
  bool? giftTenderType;
  bool? giftSaleMode;
  bool? shiftId;
  bool? tableNumber;
  bool? guestNumber;
  bool? expiryDatePrompt;
}

class TransactionEntryModeBitmap {
  bool? manual;
  bool? swipe;
  bool? chip;
  bool? contactless;
  bool? scan;
  bool? checkReader;
}

class TransactionProgramBitmap {
  bool? commercialCard;
  bool? fsa;
  bool? fleetCard;
  bool? ewic;
}

class TransactionCardTypeBitmap {
  bool? visa;
  bool? masterCard;
  bool? amex;
  bool? discover;
  bool? dinerClub;
  bool? enRoute;
  bool? jcb;
  bool? revolutionCard;
  bool? visaFleet;
  bool? masterCardFleet;
  bool? fleetOne;
  bool? fleetwide;
  bool? fuelman;
  bool? gascard;
  bool? voyager;
  bool? wrightExpress;
  bool? interac;
  bool? cup;
  bool? maestro;
  bool? sinclair;
  bool? giftOrLoyalty;
  bool? other;
}

class TransactionTransactionBehavior {
  TransactionSignatureCaptureFlag? signatureCaptureFlag;
  TransactionTipRequestFlag? tipRequestFlag;
  TransactionSignatureUploadFlag? signatureUploadFlag;
  TransactionStatusReportFlag? statusReportFlag;
  TransactionCardTypeBitmap? acceptedCardType;
  TransactionProgramBitmap? programPromptsFlag;
  TransactionSignatureAcquireFlag? signatureAcquireFlag;
  TransactionEntryModeBitmap? entryMode;
  TransactionReceiptPrintFlag? receiptPrintFlag;
  TransactionCardPresentMode? cardPresentMode;
  TransactionDebitNetwork? debitNetwork;
  TransactionUserLanguage? userLanguage;
  TransactionAdditionalResponseDataFlag? additionalResponseDataFlag;
  TransactionForceCc? forceCc;
  TransactionForceFsa? forceFsa;
  String? forceDuplicate;
  TransactionAccessibilityPinPad? accessibilityPinPad;
  TransactionTransactionPromptBitmap? transactionPromptBitmap;
  TransactionCofIndicator? cofIndicator;
  TransactionCofInitiator? cofInitiator;
}

class TransactionRestaurant {
  String? tableNumber;
  String? guestNumber;
  String? ticketNumber;
}

class TransactionCashierRequest {
  String? clerkId;
  String? shiftId;
}

class TransactionTraceRequest {
  String? ecrReferenceNumber;
  String? invoiceNumber;
  String? authorizationCode;
  String? originalReferenceNumber;
  String? timeStamp;
  String? ecrTransactionId;
  String? originalEcrReferenceNumber;
  String? originalTraceNumber;
  String? originalTransactionIdentifier;
}

class TransactionAccountRequest {
  String? account;
  String? cardExpireDate;
  String? cvvCode;
  TransactionEbtCountType? ebtType;
  String? voucherNumber;
  String? firstName;
  String? lastName;
  String? countryCode;
  String? stateCode;
  String? cityName;
  String? emailAddress;
  TransactionGiftCardType? giftCardType;
  TransactionCvvBypassReason? cvvBypassReason;
  TransactionGiftTenderType? giftTenderType;
}

class TransactionAmountRequest {
  String? transactionAmount;
  String? tipAmount;
  String? cashBackAmount;
  String? merchantFee;
  String? taxAmount;
  String? fuelAmount;
  String? serviceFee;
}

class TransactionDoGiftRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionAccountRequest? accountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionHostCredential? hostCredential;
}

class TransactionDoLoyaltyRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionAccountRequest? accountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionHostCredential? hostCredential;
}

class TransactionCheckRequest {
  TransactionCheckSaleType? saleType;
  String? routingNumber;
  String? account;
  String? number;
  TransactionCheckType? type;
  TransactionCheckIdType? idType;
  String? idValue;
  String? birth;
  String? phoneNumber;
  String? zipCode;
}

class TransactionDoCheckRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionCheckRequest? checkInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionHostCredential? hostCredential;
}

class TransactionDoCashRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionHostCredential? hostCredential;
}

class TransactionLodgingItem {
  TransactionAdditionalChargeItemType? itemType;
  String? itemAmount;
  String? itemCode;
}

class TransactionRoomRate {
  String? stayDuration;
  String? roomRateAmount;
  String? roomRateTax;
}

class TransactionLodging {
  String? roomNumber;
  String? folioNumber;
  List<TransactionRoomRate?>? roomRates;
  TransactionPrimaryChargeType? chargeType;
  TransactionLodgingNoShowFlag? noShowFlag;
  String? checkInDate;
  String? checkOutDate;
  TransactionLodgingSpecialProgramCode? specialProgramCode;
  String? departureAdjustedAmount;
  List<TransactionLodgingItem?>? lodgingItems;
}

class TransactionDoDebitRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionAccountRequest? accountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionLodging? lodging;
  TransactionHostCredential? hostCredential;
}

class TransactionDoEbtRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionAccountRequest? accountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionHostCredential? hostCredential;
}

class TransactionExtraChargeItem {
  TransactionExtraChargeItemType? itemType;
  String? extraChargeAmount;
}

class TransactionAutoRental {
  String? agreementNumber;
  String? dailyRate;
  String? rentalDuration;
  String? insuranceAmount;
  String? milesAllocated;
  String? mileRate;
  String? name;
  String? driverLicenseNumber;
  TransactionRentalProgramType? rentalProgramType;
  String? pickupLocationName;
  String? pickupCity;
  String? pickupState;
  String? pickupCountryCode;
  String? pickupDatetime;
  String? returnLocation;
  String? returnCity;
  String? returnState;
  String? returnCountryCode;
  String? returnDatetime;
  String? totalMiles;
  String? customerTaxId;
  TransactionVehicleClassId? vehicleClassId;
  List<TransactionExtraChargeItem?>? extraChargeItems;
  String? extraChargesAmount;
}

class TransactionMotoECommerceRequest {
  TransactionMotoECommerceMode? mode;
  TransactionMotoECommerceTransactionType? transactionType;
  TransactionMotoECommerceSecureType? secureType;
  String? orderNumber;
  String? installments;
  String? currentInstallment;
}

class TransactionTaxDetail {
  TransactionTaxType? taxType;
  String? taxAmount;
  String? taxRate;
  String? merchantTaxId;
  String? customerTaxId;
  String? valueAddedTaxInvoiceNumber;
  String? alternateTaxId;
}

class TransactionLineItemDetail {
  String? itemSequenceNumber;
  String? productCode;
  String? itemCommodityCode;
  String? itemDescription;
  String? itemQuantity;
  String? itemMeasurementUnit;
  String? itemUnitPrice;
  String? itemDiscountAmount;
  String? itemDiscountRate;
  List<TransactionTaxDetail?>? taxDetails;
  String? lineItemTotal;
}

class TransactionCommercialRequest {
  String? poNumber;
  String? customerCode;
  TransactionTaxExemptIndicator? taxExempt;
  String? taxExemptId;
  String? merchantTaxId;
  String? destinationZipCode;
  String? productDescription;
  String? shipFromZipCode;
  String? destinationCountryCode;
  List<TransactionTaxDetail?>? taxDetails;
  String? summaryCommodityCode;
  String? discountAmount;
  String? freightAmount;
  String? dutyAmount;
  String? orderDate;
  List<TransactionLineItemDetail?>? lineItemDetails;
  String? shippingCompany;
  String? shippingTrackingNumber;
  String? additionalFees;
}

class TransactionAvsRequest {
  String? zipCode;
  String? address;
  String? address2;
}

class TransactionDoCreditRequest {
  TransactionTransactionType? transactionType;
  TransactionAmountRequest? amountInformation;
  TransactionAccountRequest? accountInformation;
  TransactionTraceRequest? traceInformation;
  TransactionAvsRequest? avsInformation;
  TransactionCashierRequest? cashierInformation;
  TransactionCommercialRequest? commercialInformation;
  TransactionMotoECommerceRequest? motoECommerceInformation;
  TransactionRestaurant? restaurant;
  TransactionTransactionBehavior? transactionBehavior;
  TransactionHostGateway? hostGateway;
  TransactionOriginal? original;
  TransactionFleetCardRequest? fleetCard;
  TransactionMultiMerchant? multiMerchant;
  String? posEchoData;
  TransactionContinuousScreen? continuousScreen;
  TransactionLodging? lodging;
  TransactionAutoRental? autoRental;
  TransactionHostCredential? hostCredential;
}

class TransactionHostCredentialResponse {
  String? hostTid;
}

class TransactionTorResponse {
  TransactionTorRecordType? recordType;
  String? reversalTimeStamp;
  String? hostResponseCode;
  String? hostResponseMessage;
  String? hostReferenceNumber;
  String? gatewayTransactionId;
  String? originalAmount;
  String? maskedPan;
  String? batchNumber;
  String? reversalAuthorizationCode;
  TransactionTransactionType? originalTransactionType;
  String? originalTransactionDateTime;
  String? originalTransactionAuthorizationCode;
}

class TransactionVasResponse {
  TransactionVasResponseCode? vasCode;
  List<String?>? vasData;
  String? ndefData;
}

class TransactionFleetCardResponse {
  String? odometer;
  String? vehicleNumber;
  String? jobNumber;
  String? driverId;
  String? employeeNumber;
  String? licenseNumber;
  String? jobId;
  String? departmentNumber;
  String? customerData;
  String? userId;
  String? vehicleId;
}

class TransactionPaymentEmvTag {
  String? tc;
  String? tvr;
  String? aid;
  String? tsi;
  String? atc;
  String? appLabel;
  String? appPreferName;
  String? iad;
  String? arc;
  String? cid;
  TransactionCardholderVerificationMethod? cvm;
  String? arqc;
  String? ac;
  String? aip;
  String? avn;
  String? issuerAuthorizationData;
  String? cdol2;
  String? hostResponseEmvData;
  String? tacDefault;
  String? tacDenial;
  String? tacOnline;
  String? iacDefault;
  String? iacDenial;
  String? iacOnline;
  String? auc;
  String? panSequenceNumber;
}

class TransactionCardInformation {
  String? cardBin;
  String? currentCardBin;
  TransactionCardProgramType? programType;
  TransactionHostProgramType? hostProgramType;
}

class TransactionEwicDetail {
  TransactionEwicGroupType? upcPluInd;
  String? upcPluData;
  String? upcPrice;
  String? upcQty;
  String? actionCode;
  String? originalPrice;
  String? originalQty;
}

class TransactionEwicBalance {
  String? productCode;
  String? subCode;
  String? balance;
}

class TransactionAdditionalResponseData {
  String? aci;
  String? transactionId;
  String? cardLevelResult;
  String? sourceReasonCode;
  String? bankNetData;
  String? posEntryModeChange;
  String? transactionEditErrorCode;
  String? discoverProcessCode;
  String? discoverPosEntry;
  String? discoverResponseCode;
  String? posData;
  String? discoverTransactionQualifier;
  String? discoverNrid;
  String? transmissionDatetime;
  String? originalStan;
  String? cvvErrorCode;
  String? xCodeResponse;
  String? authorizingNetworkId;
  String? termEntryCapable;
  String? posEntryMode;
  String? serviceCode;
  String? spendQInd;
  String? wltId;
  String? localDateTime;
  String? emvTags;
}

class TransactionPaymentTransactionInformation {
  String? discountAmount;
  String? chargedAmount;
  TransactionSignatureResponseStatus? signatureStatus;
  String? fps;
  String? fpsSignature;
  TransactionFpsReceipt? fpsReceipt;
  String? token;
  String? hostReferenceNumber;
  String? sn;
  String? settlementDate;
  String? hostEchoData;
  TransactionPinEntryStatus? pinStatusNumber;
  String? validationCode;
  TransactionUserLanguage? userLanguageStatus;
  String? globalUid;
  String? originalTipAmount;
  String? edcType;
  TransactionAdditionalResponseData? additionalResponseData;
  String? signatureData;
  String? printLine1;
  String? printLine2;
  String? printLine3;
  String? printLine4;
  String? printLine5;
  String? ewicBenefitExpiryDate;
  List<TransactionEwicBalance?>? ewicBalance;
  List<TransactionEwicDetail?>? ewicDetail;
  String? reverseAmount;
  TransactionReversalStatus? reversalStatus;
  String? tokenSerialNumber;
}

class TransactionTraceResponse {
  String? referenceNumber;
  String? ecrReferenceNumber;
  String? timeStamp;
  String? invoiceNumber;
  String? paymentService2000;
  String? authorizationResponse;
  String? ecrTransactionId;
  String? hostTimeStamp;
}

class TransactionAccountResponse {
  String? account;
  TransactionEntryMode? entryMode;
  String? expireDate;
  TransactionEbtCountType? ebtType;
  String? voucherNumber;
  String? currentAccountNumber;
  TransactionCardType? cardType;
  String? cardHolder;
  String? cvdApprovalCode;
  String? cvdMessage;
  TransactionCardPresentIndicator? cardPresentIndicator;
  TransactionGiftCardType? giftCardType;
  TransactionDebitAccountType? debitAccountType;
  String? hostAccount;
  String? hostCardType;
  String? track1Data;
  String? track2Data;
  String? track3Data;
}

class TransactionAmountResponse {
  String? approvedAmount;
  String? amountDue;
  String? tipAmount;
  String? cashBackAmount;
  String? merchantFee;
  String? taxAmount;
  String? balance1;
  String? balance2;
  String? serviceFee;
  String? transactionRemainingAmount;
  String? approvedTipAmount;
  String? approvedCashBackAmount;
  String? approvedMerchantFee;
  String? approvedTaxAmount;
}

class TransactionHostResponse {
  String? hostResponseCode;
  String? hostResponseMessage;
  String? authorizationCode;
  String? hostReferenceNumber;
  String? traceNumber;
  String? batchNumber;
  String? transactionIdentifier;
  String? gatewayTransactionId;
  String? hostDetailedMessage;
  String? transactionIntegrityClass;
  String? retrievalReferenceNumber;
  String? issuerResponseCode;
  String? paymentAccountReferenceId;
}

class TransactionDoGiftResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionAccountResponse? accountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionMotoECommerceResponse {
  TransactionMotoECommerceMode? mode;
  TransactionMotoECommerceTransactionType? transactionType;
  TransactionMotoECommerceSecureType? secureType;
  String? orderNumber;
  String? installments;
  String? currentInstallment;
}

class TransactionCommercialResponse {
  String? poNumber;
  String? customerCode;
  TransactionTaxExemptIndicator? taxExempt;
  String? taxExemptId;
  String? merchantTaxId;
  String? destinationZipCode;
  String? productDescription;
}

class TransactionAvsResponse {
  String? avsApprovalCode;
  String? avsMessage;
  String? zipCode;
  String? address1;
  String? address2;
}

class TransactionDoCreditResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionAccountResponse? accountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionAvsResponse? avsInformation;
  TransactionCommercialResponse? commercialInformation;
  TransactionMotoECommerceResponse? motoECommerceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  String? payloadData;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionCheckResponse {
  TransactionCheckSaleType? saleType;
  String? routingNumber;
  String? accountNumber;
  String? checkNumber;
  TransactionCheckType? checkType;
  TransactionCheckIdType? idType;
  String? idValue;
  String? birth;
  String? phoneNumber;
  String? zipCode;
}

class TransactionDoCheckResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionCheckResponse? checkInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionDoDebitResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionAccountResponse? accountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionDoLoyaltyResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionAccountResponse? accountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionDoEbtResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionAccountResponse? accountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

class TransactionDoCashResponse {
  String? responseCode;
  String? responseMessage;
  TransactionHostResponse? hostInformation;
  TransactionTransactionType? transactionType;
  TransactionAmountResponse? amountInformation;
  TransactionTraceResponse? traceInformation;
  TransactionRestaurant? restaurant;
  TransactionPaymentTransactionInformation? paymentTransactionInformation;
  TransactionCardInformation? cardInformation;
  TransactionMultiMerchant? multiMerchant;
  TransactionPaymentEmvTag? paymentEmvTag;
  TransactionFleetCardResponse? fleetCard;
  TransactionVasResponse? vasInformation;
  TransactionTorResponse? torInformation;
  TransactionHostCredentialResponse? hostCredentialInformation;
}

enum TransactionTransactionType {
  NotSet,
  Unknown,
  Sale,
  Return,
  Authorization,
  PostAuthorization,
  ForceAuthorization,
  Adjust,
  Withdrawal,
  Activate,
  Issue,
  Reload,
  Cashout,
  Deactivate,
  Replace,
  Merge,
  ReportLost,
  Void,
  VoidSale,
  VoidReturn,
  VoidAuthorization,
  VoidPostAuthorization,
  VoidForceAuthorization,
  VoidWithdrawal,
  Inquiry,
  Verify,
  Reactivate,
  ForcedIssue,
  ForcedAdd,
  Unload,
  Renew,
  GetConvertDetail,
  Convert,
  Tokenize,
  IncrementalAuthorization,
  BalanceWithLock,
  RedemptionWithUnlock,
  Rewards,
  Reenter,
  TransactionAdjustment,
  Transfer,
  Finalize,
  Deposit,
  AccountPayment,
  Reversal,
}

enum TransactionSignatureResponseStatus {
  NotSet,
  LocalCaptured,
  Aborted,
  Timeout,
  NotAvailable,
  SuccessfullyUploaded,
  FailedDuringUploading,
}

enum TransactionFpsReceipt {
  NotSet,
  MerchantOnly,
  CustomerOnly,
  NoReceipt,
}

enum TransactionPinEntryStatus {
  NotSet,
  PinBypassed,
  PinVerified,
}

enum TransactionUserLanguage {
  NotSet,
  EnglishUs,
  French,
  Chinese,
  Lithuanian,
  EnglishUk,
}

enum TransactionEwicGroupType {
  NotSet,
  UpcData,
  PluData,
}

enum TransactionReversalStatus {
  NotSet,
  Aborted,
  Timeout,
  ReversalFailed,
  ReversalSuccess,
}

enum TransactionCardProgramType {
  NotSet,
  RegularCard,
  CommercialCard,
  FsaCard,
  FleetCard,
}

enum TransactionHostProgramType {
  NotSet,
  Regular,
  Commercial,
  HsaCard,
  FsaCard,
  HraCard,
  Fleet,
  Unknown,
}

enum TransactionCardholderVerificationMethod {
  NotSet,
  FailCvmProcessing,
  PlaintextOfflinePinVerification,
  OnlinePin,
  PlaintextOfflinePinAndSignature,
  EncipheredOfflinePinVerification,
  EncipheredOfflinePinVerificationAndSignature,
  Signature,
  NoCvmRequired,
  OnDeviceCvm,
}

enum TransactionVasResponseCode {
  NotSet,
  VasOk,
  VasOseError,
  VasGetDataCommandError,
  VasIssueNeedToStartPayment,
  AppVersionTooLow,
  SkipProtocolInVasMode,
  SkipProtocolAndNoDataForthcomingInDualMode,
  SkipProtocolAndNoDataForthcomingInSingleMode,
  VasDataNotFound,
  VasDataNotActive,
  UserInterventionRequiredOnMobileDevice,
  TheMerchantIdIsNull,
  VasGetKeyError,
  VasDataDecryptionError,
  UnknownError,
}

enum TransactionTorRecordType {
  NotSet,
  ReversalRecord,
  EmvSecondGacReversal,
}

enum TransactionEntryMode {
  NotSet,
  Manual,
  Swipe,
  Contactless,
  LaserScanner,
  Chip,
  ChipFallBackSwipe,
  FrontCamera,
  RearCamera,
}

enum TransactionEbtCountType {
  NotSet,
  CashBenefits,
  FoodStamp,
  Voucher,
  Ewic,
  EwicVoucher,
}

enum TransactionCardType {
  NotSet,
  Visa,
  MasterCard,
  Amex,
  Discover,
  DinerClub,
  EnRoute,
  Jcb,
  RevolutionCard,
  VisaFleet,
  MasterCardFleet,
  FleetOne,
  Fleetwide,
  Fuelman,
  Gascard,
  Voyager,
  WrightExpress,
  Interac,
  Cup,
  Maestro,
  Sinclair,
  Other,
}

enum TransactionCardPresentIndicator {
  NotSet,
  CardPresent,
  CardNotPresent,
}

enum TransactionGiftCardType {
  NotSet,
  CustomValueGiftCard,
  PredetermineValueGiftCard,
}

enum TransactionDebitAccountType {
  NotSet,
  Checking,
  Saving,
  Default,
}

enum TransactionCheckSaleType {
  NotSet,
  Verification,
  Conversion,
  Guarantee,
}

enum TransactionCheckType {
  NotSet,
  Personal,
  Business,
  Government,
  TwoParty,
}

enum TransactionCheckIdType {
  NotSet,
  DriverLicense,
  Ssn,
  MilitaryId,
  CourtesyCard,
  ProprietaryCard,
  PassportNumber,
}

enum TransactionTaxExemptIndicator {
  NotSet,
  NotExempt,
  Exempt,
}

enum TransactionMotoECommerceMode {
  NotSet,
  MailOrderMode,
  TeleOrderMode,
  ECommerceMode,
}

enum TransactionMotoECommerceTransactionType {
  NotSet,
  SingleTransaction,
  Installment,
  RecurringTransaction,
}

enum TransactionMotoECommerceSecureType {
  NotSet,
  NonSecure,
  SecureTransaction,
}

enum TransactionCvvBypassReason {
  NotSet,
  DeliberatelyBypassed,
  NotAvailable,
  Illegible,
}

enum TransactionGiftTenderType {
  NotSet,
  Unknown,
  CreditCard,
  DebitCard,
  Check,
  Cash,
}

enum TransactionTaxType {
  NotSet,
  Unknown,
  NationalSalesTax,
  StateSalesTax,
  CitySalesTax,
  LocalSalesTax,
  MunicipalSalesTax,
  DutyTax,
  ValueAddedTax,
  GoodsAndServicesTax,
  ProvincialSalesTax,
  RoomTax,
  OccupancyTax,
  EnergyTax,
}

enum TransactionSignatureCaptureFlag {
  NotSet,
  NotCapture,
  Capture,
}

enum TransactionTipRequestFlag {
  NotSet,
  NotNeedEnterTipOnTerminal,
  NeedEnterTipOnTerminal,
}

enum TransactionSignatureUploadFlag {
  NotSet,
  NotToUpload,
  ToUpload,
}

enum TransactionStatusReportFlag {
  NotSet,
  NotToReport,
  ToReport,
}

enum TransactionSignatureAcquireFlag {
  NotSet,
  NotRequired,
  Required,
}

enum TransactionReceiptPrintFlag {
  NotSet,
  NoReceipt,
  MerchantOnly,
  CustomerOnly,
  BothCopy,
}

enum TransactionCardPresentMode {
  NotSet,
  DefaultValue,
  AssumeCardPresent,
  AssumeCardNotPresent,
  PromptForUseToSelect,
}

enum TransactionDebitNetwork {
  NotSet,
  Star,
  Nyce,
  Pulse,
  Maestro,
  Interlink,
  Accel,
}

enum TransactionAdditionalResponseDataFlag {
  NotSet,
  No,
  Yes,
}

enum TransactionForceCc {
  NotSet,
  No,
  Yes,
}

enum TransactionForceFsa {
  NotSet,
  No,
  Yes,
}

enum TransactionAccessibilityPinPad {
  NotSet,
  NotSupport,
  On,
  Off,
}

enum TransactionCofIndicator {
  NotSet,
  Yes,
}

enum TransactionCofInitiator {
  NotSet,
  Customer,
  Merchant,
}

enum TransactionTokenRequestFlag {
  NotSet,
  No,
  Yes,
}

enum TransactionHostGatewayReturnReason {
  NotSet,
  GeneralReturn,
  Adjustment,
}

enum TransactionContinuousScreen {
  NotSet,
  Default,
  NotGoToIdleScreen,
}

enum TransactionPrimaryChargeType {
  NotSet,
  Other,
  LodgingOrHotel,
  Restaurant,
  GiftShop,
  Spa,
  BeautyServices,
  ConventionFee,
  Tennis,
  Golf,
}

enum TransactionLodgingNoShowFlag {
  NotSet,
  NotShow,
  Show,
}

enum TransactionLodgingSpecialProgramCode {
  NotSet,
  Other,
  AssuredReservation,
  DelayedCharge,
  AdvancedDeposit,
  ExpressCheckOutService,
}

enum TransactionAdditionalChargeItemType {
  NotSet,
  Other,
  GiftShop,
  Laundry,
  MiniBar,
  Restaurant,
  Telephone,
}

enum TransactionRentalProgramType {
  NotSet,
  AdvanceDeposit,
  AssuredReservation,
  DelayedCharge,
  ExpressService,
  NormalCharge,
  NoShowCharge,
}

enum TransactionVehicleClassId {
  NotSet,
  Mini,
  Subcompact,
  Economy,
  Compact,
  Midsize,
  Intermediate,
  Standard,
  FullSize,
  Luxury,
  Premium,
  Minivan,
  TwelvePassengerVan,
  MovingVan,
  FifteenPassingVan,
  CargoVan,
  TwelveFootTruck,
  TwentyFootTruck,
  TwentyFourFootTruck,
  TwentySixFootTruck,
  Moped,
  Stretch,
  Regular,
  Unique,
  Exotic,
  SmallOrMediumTruck,
  LargeTruck,
  SmallSuv,
  MediumSuv,
  LargeSuv,
  ExoticSuv,
  FourWheelDrive,
  Special,
  Miscellaneous,
}

enum TransactionExtraChargeItemType {
  NotSet,
  Other,
  ExtraMileage,
  Gas,
  LateReturn,
  OneWayCharge,
  ParkingViolation,
}

@HostApi()
abstract class POSLinkTransactionApi {
   @async
   TransactionDoCreditResponse doCredit(TransactionDoCreditRequest req);
   @async
   TransactionDoEbtResponse doEbt(TransactionDoEbtRequest req);
   @async
   TransactionDoDebitResponse doDebit(TransactionDoDebitRequest req);
   @async
   TransactionDoCashResponse doCash(TransactionDoCashRequest req);
   @async
   TransactionDoCheckResponse doCheck(TransactionDoCheckRequest req);
   @async
   TransactionDoLoyaltyResponse doLoyalty(TransactionDoLoyaltyRequest req);
   @async
   TransactionDoGiftResponse doGift(TransactionDoGiftRequest req);
}
